import {createStore} from 'redux'
import _ from "../assets/utils"

// import {createStore} from "../myredux";

/* 管理员：修改store容器的公共状态 */
let initial = {
    supNum: 10,
    oppNum: 5
}
const reducer = function (state = initial, action) {
    // state：存储 store 容器中的公共状态
    // action: 每一次基于 dispatch 派发时，传递进来的行为对象(要求必须具备 type 属性，存储派发的行为标识)
    // 为了接下来的操作中，我们操作state，不会直接修改容器中的状态(要等到最后return的时候)，需要先克隆
    state = _.clone(true, state); // 深拷贝
    // 基于派发的行为标识，修改 store容器中的公共状态消息
    let {type} = action
    switch (type) {
        case "VOTE_SUP":
            state.supNum++
            break
        case "VOTE_OPP":
            state.oppNum++
            break
    }

    // return 的内容，会整体替换 store 容器中的内容
    return state
}

/* 创建store公共容器 */
const store = createStore(reducer)

export default store